/*
 * Copyright © 2021 http://www.hn-szzy.com/ All rights reserved.
 */
package com.xjh.basestudy.leetcode.question;

import org.springframework.security.access.method.P;

import java.util.Arrays;

/**
 * @author： 徐建华
 * @date： 2022/3/20
 * @description： 给你一个 升序排列 的数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，返回删除后数组的新长度。
 * 元素的 相对顺序 应该保持 一致 。
 */
public class Q26_removeDuplicates {
    public static void main(String[] args) {
        int[] nums = new int[]{1, 2, 2, 2, 3, 6, 6, 7};
        //System.out.println(removeDuplicates(nums));
        System.out.println(testRemoveDuplicates(nums));
    }

    public static int removeDuplicates(int[] nums) {
        //定义数组长度的变量
        int n = nums.length;
        if (n == 0) {
            return 0;
        }
        //定义快指针和慢指针（）
        int fast = 1, slow = 1;
        //while循环快指针
        while (fast < n) {
            //如果快指针后一个元素和前一个元素不相同
            if (nums[fast] != nums[fast - 1]) {
                //将快指针的后一个指向赋予慢指针（慢指针跳过相同元素）
                nums[slow] = nums[fast];
                //每数到一个新元素 slow加一个
                ++slow;
            }
            //fast指针往后移动一位
            ++fast;
        }

        return slow;
    }

    public static int testRemoveDuplicates(int[] nums) {
        int n = nums.length;
        int count = 1;

        if (n == 0) {
            return 0;
        }


        int fast = 1, slow = 1;
        while (fast < n) {
            if (nums[fast] != nums[fast - 1]) {
                nums[slow] = nums[fast];
                System.out.println("这是第" + count + "个元素===" + nums[fast - 1]);
                count++;
                slow++;
            }
            fast++;

        }
        System.out.println("sss"+Arrays.toString(nums));
        return slow;
    }

}
